/*
  拔河比赛
  题目描述
    可多班上举办拔河比赛，可多认为体重越重的越有优势！
    输入 n 名同学的学号 id 和体重 w，其中 id 为正整数，w 为实数（小数），
    请将班上 n 名同学按照体重从大到小排序，如果体重相同，则按学号从小到大排序。
  输入描述
    n + 1 行，
    第 1 行，一个正整数 n，表示班级人数；（0 < n <= 100）
    接下来 n 行，每行两个数，分别是 id 和 w，表示学生学号和体重。
  输出描述
    输出 n 行，其中第 i 行为用空格间隔开的 2 个数 id、w，表示按要求排序后的学号和体重。
  样例1
    输入
      5
      1 120.7
      2 150.7
      3 99
      4 126.6
      5 110.7
    输出
      2 150.7
      4 126.6
      1 120.7
      5 110.7
      3 99
*/

#include <iostream>
#include <algorithm>  // 注意: 使用sort()函数需要include该头文件!

using namespace std;

struct stu {
    int id;
    double w;
} a[105];

// 自定义规则函数
bool cmp(stu a, stu b) {
    if (a.w != b.w) {
        return a.w > b.w;
    } else {
        return a.id < b.id;
    }
}


int main() {
    int n;

    cin >> n;
    for (int i = 0; i <= n - 1; i++) {
        cin >> a[i].id >> a[i].w;
    }

    // 对数组 a 的前 n 个数据排序
    sort(a, a + n, cmp);

    for (int i = 0; i <= n - 1; i++) {
        cout << a[i].id << " " << a[i].w << endl;
    }

    return 0;
}